protected T _transform(Object original) {
      Object result = original;
      for (Function<Object, ?> f : _transformations()) {
        result = f.fun(result);
      }
      //noinspection unchecked
      return (T)result;
    }
protected T _transform(Object original)