Project: typescript
Task (challenging): The Setter implements generic ValueType where:
  1. ArraySetter, ObjectSetter and CustomSetter inherit the ValueType from their parent Setter
  2. InputSetter maintains backward compatibility without ValueType constraints