support enum type and private fields