class FileView implements Transform<File, String>,
		HasLicenseTermView<File>,
		HasImportsView<File>,
        HasJavadocView<File>,
        HasClassesView<File> {

	@Override
	public Optional<String> transform(Generator gen, File model) {<FILL_FUNCTION_BODY>}
    
    /**
     * Renders the 'package'-part of the file. In java, the package should only
     * be present if the file is located in a directory in the sources folder.
     * If the file is in the global package, an empty string will be returned.
     * <p>
     * The package part will be suffixed by two new line characters if a package
     * was outputted.
     * <p>
     * Example: <pre>"package com.speedment.example;\n\n"</pre>
     * 
     * @param file  the file
     * @return      the package part or an empty string
     */
    private String renderPackage(File file) {
		final Optional<String> name = fileToClassName(file.getName());
		if (name.isPresent()) {
			final Optional<String> pack = packageName(name.get());
			if (pack.isPresent()) {
				return "package " + pack.get() + ";" + dnl();
			}
		}
		
		return "";
	}
}

        requireNonNulls(gen, model);
        
		final DependencyManager mgr = gen.getDependencyMgr();
        mgr.clearDependencies();
        
        final String pack = fileToClassName(model.getName())
            .flatMap(Formatting::packageName)
            .orElse("");
        
        mgr.setCurrentPackage(pack);

		final Optional<String> view = Optional.of(
			renderLicenseTerm(gen, model) +
			renderJavadoc(gen, model) +
			renderPackage(model) +
            renderImports(gen, model) +
            renderClasses(gen, model)
		);
		
		mgr.unsetCurrentPackage(pack);
		
		return view;
	
<no_super_class>