question: @ NotNull private static List < Color > resolveMultipleColors ( @ NotNull RenderResources resources , @ Nullable ResourceValue value , @ NotNull Project project , int depth ) { if ( depth >= MAX_RESOURCE_INDIRECTION ) { LOG . warn ( "too deep " + value ) ; return Collections . emptyList ( ) ; } if ( value != null ) { value = resources . resolveResValue ( value ) ; } if ( value == null ) { return Collections . emptyList ( ) ; } final List < Color > result = new ArrayList < > ( ) ; StateList stateList = resolveStateList ( resources , value , project ) ; if ( stateList != null ) { for ( StateListState state : stateList . getStates ( ) ) { List < Color > stateColors ; ResourceValue resolvedStateResource = resources . findResValue ( state . getValue ( ) , false ) ; if ( resolvedStateResource != null ) { stateColors = resolveMultipleColors ( resources , resolvedStateResource , project , depth + 1 ) ; } else { Color color = parseColor ( state . getValue ( ) ) ; stateColors = color == null ? Collections . emptyList ( ) : ImmutableList . of ( color ) ; } for ( Color color : stateColors ) { try { result . add ( makeColorWithAlpha ( resources , color , state . getAlpha ( ) ) ) ; } catch ( NumberFormatException e ) { result . add ( color ) ; LOG . warn ( String . format ( ALPHA_FLOATING_ERROR_FORMAT , stateList . getDirName ( ) , stateList . getFileName ( ) ) ) ; } } } } else { Color color = parseColor ( value . getValue ( ) ) ; if ( color != null ) { result . add ( color ) ; } } return result ; }
target:  Tries to resolve colors from given resource value. When state list is encountered all possibilities are explored.