// Path: src/main/java/ch/ifocusit/plantuml/classdiagram/model/clazz/JavaClazz.java
// public class JavaClazz implements Clazz {
// 
//     private final Class<?> relatedClass;
//     private Optional<String> overridedName;
//     private Optional<Link> link;
//     private List<ClassAttribute> attributes = new ArrayList<>();
//     private List<ClassMethod> methods = new ArrayList<>();
//     private String backgroundColor;
//     private String borderColor;
// 
//     public JavaClazz(Class<?> relatedClass) {
//         this.relatedClass = relatedClass;
//     }
// 
//     public String getName() {
//         return overridedName.orElse(ClassUtils.getSimpleName(relatedClass));
//     }
// 
//     public Type getType() {
//         return parseType(relatedClass);
//     }
// 
//     public Optional<Link> getLink() {
//         return link;
//     }
// 
//     public JavaClazz setLink(Optional<Link> link) {
//         this.link = link;
//         return this;
//     }
// 
//     public Class<?> getRelatedClass() {
//         return relatedClass;
//     }
// 
//     public List<ClassAttribute> getAttributes() {
//         return attributes;
//     }
// 
//     public void addAttributes(ClassAttribute... attributes) {
//         for (ClassAttribute attribute : attributes) {
//             this.attributes.add(attribute);
//         }
//     }
// 
//     public List<ClassMethod> getMethods() {
//         return methods;
//     }
// 
//     public void addMethods(ClassMethod... methods) {
//         for (ClassMethod method : methods) {
//             this.methods.add(method);
//         }
//     }
// 
//     public JavaClazz setOverridedName(String overridedName) {
//         this.overridedName = Optional.ofNullable(overridedName);
//         return this;
//     }
// 
//     @Override
//     public Optional<List<String>> getStereotypes() {
//         return Optional.empty();
//     }
// 
//     private Type parseType(Class aClass) {
//         if (aClass.isInterface()) {
//             return Type.INTERFACE;
//         }
//         if (aClass.isEnum()) {
//             return Type.ENUM;
//         }
//         if (Modifier.isAbstract(aClass.getModifiers())) {
//             return Type.ABSTRACT;
//         }
//         return Type.CLASS;
//     }
// 
//     @Override
//     public Optional<String> getBackgroundColor() {
//         return Optional.ofNullable(backgroundColor);
//     }
// 
//     @Override
//     public Optional<String> getBorderColor() {
//         return Optional.ofNullable(borderColor);
//     }
// 
//     public JavaClazz setBackgroundColor(String color) {
//         this.backgroundColor = color;
//         return this;
//     }
// 
//     public JavaClazz setBorderColor(String color) {
//         this.borderColor = color;
//         return this;
//     }
// 
//     public static JavaClazz from(Class aClass, ClassAttribute[] attributes, ClassMethod[] methods) {
//         JavaClazz javaClass = new JavaClazz(aClass);
//         javaClass.addAttributes(attributes);
//         javaClass.addMethods(methods);
//         return javaClass;
//     }
// }


import ch.ifocusit.plantuml.classdiagram.model.clazz.JavaClazz;
import org.apache.commons.lang3.StringUtils;
package ch.ifocusit.plantuml.utils;


public class PlantUmlUtils {

    private static boolean isHide(JavaClazz javaClazz, String part, String type) {
        return StringUtils.isNotBlank(part) && part.contains("hide " + type) && !part.contains("show " + javaClazz.getName() + " " + type);
    }

// Path: src/main/java/ch/ifocusit/plantuml/classdiagram/model/clazz/JavaClazz.java
// public class JavaClazz implements Clazz {
// 
//     private final Class<?> relatedClass;
//     private Optional<String> overridedName;
//     private Optional<Link> link;
//     private List<ClassAttribute> attributes = new ArrayList<>();
//     private List<ClassMethod> methods = new ArrayList<>();
//     private String backgroundColor;
//     private String borderColor;
// 
//     public JavaClazz(Class<?> relatedClass) {
//         this.relatedClass = relatedClass;
//     }
// 
//     public String getName() {
//         return overridedName.orElse(ClassUtils.getSimpleName(relatedClass));
//     }
// 
//     public Type getType() {
//         return parseType(relatedClass);
//     }
// 
//     public Optional<Link> getLink() {
//         return link;
//     }
// 
//     public JavaClazz setLink(Optional<Link> link) {
//         this.link = link;
//         return this;
//     }
// 
//     public Class<?> getRelatedClass() {
//         return relatedClass;
//     }
// 
//     public List<ClassAttribute> getAttributes() {
//         return attributes;
//     }
// 
//     public void addAttributes(ClassAttribute... attributes) {
//         for (ClassAttribute attribute : attributes) {
//             this.attributes.add(attribute);
//         }
//     }
// 
//     public List<ClassMethod> getMethods() {
//         return methods;
//     }
// 
//     public void addMethods(ClassMethod... methods) {
//         for (ClassMethod method : methods) {
//             this.methods.add(method);
//         }
//     }
// 
//     public JavaClazz setOverridedName(String overridedName) {
//         this.overridedName = Optional.ofNullable(overridedName);
//         return this;
//     }
// 
//     @Override
//     public Optional<List<String>> getStereotypes() {
//         return Optional.empty();
//     }
// 
//     private Type parseType(Class aClass) {
//         if (aClass.isInterface()) {
//             return Type.INTERFACE;
//         }
//         if (aClass.isEnum()) {
//             return Type.ENUM;
//         }
//         if (Modifier.isAbstract(aClass.getModifiers())) {
//             return Type.ABSTRACT;
//         }
//         return Type.CLASS;
//     }
// 
//     @Override
//     public Optional<String> getBackgroundColor() {
//         return Optional.ofNullable(backgroundColor);
//     }
// 
//     @Override
//     public Optional<String> getBorderColor() {
//         return Optional.ofNullable(borderColor);
//     }
// 
//     public JavaClazz setBackgroundColor(String color) {
//         this.backgroundColor = color;
//         return this;
//     }
// 
//     public JavaClazz setBorderColor(String color) {
//         this.borderColor = color;
//         return this;
//     }
// 
//     public static JavaClazz from(Class aClass, ClassAttribute[] attributes, ClassMethod[] methods) {
//         JavaClazz javaClass = new JavaClazz(aClass);
//         javaClass.addAttributes(attributes);
//         javaClass.addMethods(methods);
//         return javaClass;
//     }
// }


// Path: src/main/java/ch/ifocusit/plantuml/utils/PlantUmlUtils.java
import ch.ifocusit.plantuml.classdiagram.model.clazz.JavaClazz;
import org.apache.commons.lang3.StringUtils;

package ch.ifocusit.plantuml.utils;


public class PlantUmlUtils {

    private static boolean isHide(JavaClazz javaClazz, String part, String type) {
        return StringUtils.isNotBlank(part) && part.contains("hide " + type) && !part.contains("show " + javaClazz.getName() + " " + type);
    }

    public static boolean hideFields(JavaClazz javaClazz, String part) {