code: def Java(env, target, source, *args, **kw):
      
      if not SCons.Util.is_List(target):
          target = [target]
      if not SCons.Util.is_List(source):
          source = [source]
  
      # Pad the target list with repetitions of the last element in the
      # list so we have a target for every source element.
      target = target + ([target[-1]] * (len(source) - len(target)))
  
      java_suffix = env.subst('$JAVASUFFIX')
      result = []
  
      for t, s in zip(target, source):
          if isinstance(s, SCons.Node.FS.Base):
              if isinstance(s, SCons.Node.FS.File):
                  b = env.JavaClassFile
              else:
                  b = env.JavaClassDir
          else:
              if os.path.isfile(s):
                  b = env.JavaClassFile
              elif os.path.isdir(s):
                  b = env.JavaClassDir
              elif s[-len(java_suffix):] == java_suffix:
                  b = env.JavaClassFile
              else:
                  b = env.JavaClassDir
          result.extend(b(t, s, *args, **kw))
  
      return result
docs: A pseudo-Builder wrapper around the separate JavaClass{File,Dir}
      Builders.