code: private List<List<IType>> extractContextTypes( List<? extends IInvocableType>  funcTypes )
    {
      if( funcTypes != null )
      {
        ArrayList<List<IType>> returnList = new ArrayList<>();
        for( IInvocableType funcType : funcTypes )
        {
          for( int i = 0; i < funcType.getParameterTypes().length; i++ )
          {
            IType paramType = funcType.getParameterTypes()[i];
            if( i >= returnList.size() )
            {
              returnList.add( new ArrayList<>() );
            }
            List<IType> paramTypeList = returnList.get( i );
            if( !paramTypeList.contains( paramType ) )
            {
              paramTypeList.add( paramType );
            }
          }
        }
        return returnList;
      }
      else
      {
        return Collections.emptyList();
      }
    }
docs: returns a list of lists of unique types at each argument position,