The uima.cas.TOP is the Object-equivalent type of UIMA. But it is slightly different from what you would expect. UIMA operates with two concepts: 1) FeatureStructure, 2) primitive types (int, boolean, etc. and String!). If you set the range of a feature to TOP, it can accept any kind of feature structure (i.e. anything that inherits from TOP), but not any of the primitive types - no auto-boxing here. If you set the range to a primitive type, then it will only accept that type.
A work-around could be to define custom types , e.g. FSInt, FSString, FSBoolean which inherit from TOP and which would have a "value" feature of the respective type (int, String, boolean). You could then set the value in that FS and assign it to a feature with range TOP.
Note: I am currently a committer on the Apache UIMA project.