ProcessOutputType (@NonNls String attribute, @NotNull Key streamType) { ProcessOutputType streamOutputType = streamType instanceof ProcessOutputType ? (ProcessOutputType)streamType : (ProcessOutputType)ProcessOutputTypes.STDOUT; Map<String, ProcessOutputType> attrsToKeyMap = ProcessOutputType.isStdout(streamType) ? myStdoutAttrsToKeyMap : myStderrAttrsToKeyMap; ProcessOutputType key = attrsToKeyMap.get(attribute); if (key != null) { return key; } final String completeAttribute = attribute; if (attribute.startsWith("\u001B[")) { attribute = attribute.substring(2); } else { attribute = StringUtil.trimStart(attribute, "["); } attribute = StringUtil.trimEnd(attribute, "m"); if (attribute.equals("0")) { return streamOutputType; } ProcessOutputType newKey = new ProcessOutputType(completeAttribute, streamOutputType); ConsoleViewContentType.registerNewConsoleViewType(newKey, createAnsiConsoleViewContentType(attribute)); attrsToKeyMap.put(completeAttribute, newKey); return newKey; }