question: public Light provideLight ( String name ) { Light t = getLight ( name ) ; if ( t != null ) { return t ; } if ( name . startsWith ( getSystemPrefix ( ) + typeLetter ( ) ) ) { return newLight ( name , null ) ; } else if ( name . length ( ) > 0 ) { return newLight ( makeSystemName ( name ) , null ) ; } else { throw new IllegalArgumentException ( "\"" + name + "\" is invalid" ) ; } }
target:  Locate via user name, then system name if needed. If that fails, create a new Light: If the name is a valid system name, it will be used for the new Light. Otherwise, the makeSystemName method will attempt to turn it into a valid system name.