private void parseHeader() {
		if (modified == sourceFile.lastModified()) {
			return;
		}

		if (!sourceFile.exists()) {
			return; // must have been deleted
		}

		init();

		String commentPrefix = provider.getCommentCharacter();

		// Note that skipping certification header presumes that the header
		// is intact with an appropriate start and end
		String certifyHeaderStart = provider.getCertifyHeaderStart();
		boolean allowCertifyHeader = (certifyHeaderStart != null);

		try (BufferedReader reader =
			new BufferedReader(new InputStreamReader(sourceFile.getInputStream()))) {
			StringBuilder buffer = new StringBuilder();
			boolean hitAtSign = false;
			while (true) {
				String line = reader.readLine();
				if (line == null) {
					break;
				}

				if (allowCertifyHeader && skipCertifyHeader(reader, line)) {
					allowCertifyHeader = false;
					continue;
				}

				if (parseBlockComment(reader, line)) {
					allowCertifyHeader = false;
					continue; // read block comment; move to next line
				}

				if (line.startsWith(commentPrefix)) {
					allowCertifyHeader = false;

					line = line.substring(commentPrefix.length()).trim();
					if (line.startsWith("@")) {
						hitAtSign = true;
						parseMetaDataLine(line);
					}
					else if (!hitAtSign) {
						// only consume line comments that come before metadata
						buffer.append(line).append(' ').append('\n');
					}
				}
				else if (line.trim().isEmpty()) {
					continue; // allow blank lines between "//" comment sections
				}
				else {
					break;
				}
			}

			description = buffer.toString();
			modified = sourceFile.lastModified();
		}
		catch (IOException e) {
			Msg.debug(this, "Unexpected exception reading script: " + sourceFile, e);
		}
	}
Returns the script description.
@return the script description
Ghidra/Features/Base/src/main/java/ghidra/app/script/ScriptInfo.java