Comment Comment by teh64 I think naming conventions might help: (b Box[InType]) Map[OutType any](transformFunction func(InType) OutType) Box[OutType] Same in Python: def map[U](self, f: Callable[[T], U]) -> Box[U] vs def map[OutType](self, transform_function: Callable[[InType], OutType]) -> Box[OutType] and Java: public <OutType> Box<OutType> map(Function<InType, OutType> transformFunction) vs. public <U> Box<U> map(Function<T, U> f) parent teh64 3 months ago