public static <T> Collection<T> removed( Collection<T> left, Collection<T> right )
    {
        if ( left == null || left.isEmpty() ) {
            return java.util.Collections.emptyList();
        }
        if ( right == null || right.isEmpty() ) {
            return new ArrayList<T>( left );
        }
        Collection<T> removed = new ArrayList<T>();
        for ( T eachLeft : left ) {
            if ( !right.contains( eachLeft ) ) {
                removed.add( eachLeft );
            }
        }
        return removed;
    }