// Path: bluez-dbus/src/main/java/org/bluez/datatypes/ThreeTuple.java
// public class ThreeTuple<A, B, C> extends Tuple {
// 
//     @Position(0)
//     private A firstValue;
//     @Position(1)
//     private B secondValue;
//     @Position(2)
//     private C thirdValue;
// 
//     public ThreeTuple(A _firstValue, B _secondValue, C _thirdValue) {
//         firstValue = _firstValue;
//         secondValue = _secondValue;
//         thirdValue = _thirdValue;
//     }
// 
//     public A getFirstValue() {
//         return firstValue;
//     }
// 
//     public void setFirstValue(A _firstValue) {
//         firstValue = _firstValue;
//     }
// 
//     public B getSecondValue() {
//         return secondValue;
//     }
// 
//     public void setSecondValue(B _secondValue) {
//         secondValue = _secondValue;
//     }
// 
//     public C getThirdValue() {
//         return thirdValue;
//     }
// 
//     public void setThirdValue(C _thirdValue) {
//         thirdValue = _thirdValue;
//     }
// 
// }
// 
// Path: bluez-dbus/src/main/java/org/bluez/datatypes/TwoTuple.java
// public class TwoTuple<A, B> extends Tuple {
// 
//     @Position(0)
//     private A firstValue;
//     @Position(1)
//     private B secondValue;
// 
//     public TwoTuple(A _firstValue, B _secondValue) {
//         firstValue = _firstValue;
//         secondValue = _secondValue;
//     }
// 
//     public A getFirstValue() {
//         return firstValue;
//     }
// 
//     public void setFirstValue(A _firstValue) {
//         firstValue = _firstValue;
//     }
// 
//     public B getSecondValue() {
//         return secondValue;
//     }
// 
//     public void setSecondValue(B _secondValue) {
//         secondValue = _secondValue;
//     }
// 
// }


import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;
import java.util.Set;
import java.util.TreeSet;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.bluez.datatypes.ThreeTuple;
import org.bluez.datatypes.TwoTuple;
import org.freedesktop.dbus.DBusPath;
import org.freedesktop.dbus.exceptions.DBusException;
import org.freedesktop.dbus.interfaces.DBusInterface;
import org.freedesktop.dbus.messages.DBusSignal;
import org.freedesktop.dbus.types.UInt16;
import org.freedesktop.dbus.types.UInt32;
import org.freedesktop.dbus.types.UInt64;
import org.freedesktop.dbus.types.Variant;
import org.slf4j.LoggerFactory;
            String result = sb.toString();

            for (String type : types) {
                if (type.contains("Variant<")) {
                    imports.add(Variant.class.getName());
                }

                if (type.contains("FileDescriptor")) {
                    imports.add(org.freedesktop.dbus.FileDescriptor.class.getName());
                }
                if (type.contains("Map<")) {
                    imports.add(Map.class.getName());
                }
                if (type.contains("Properties")) {
                    imports.add(Properties.class.getName());
                }
                if (type.contains("UInt16")) {
                    imports.add(UInt16.class.getName());
                }
                if (type.contains("UInt32")) {
                    imports.add(UInt32.class.getName());
                }
                if (type.contains("UInt64")) {
                    imports.add(UInt64.class.getName());
                }

                if (type.contains("DBusPath")) {
                    imports.add(DBusPath.class.getName());
                }

// Path: bluez-dbus/src/main/java/org/bluez/datatypes/ThreeTuple.java
// public class ThreeTuple<A, B, C> extends Tuple {
// 
//     @Position(0)
//     private A firstValue;
//     @Position(1)
//     private B secondValue;
//     @Position(2)
//     private C thirdValue;
// 
//     public ThreeTuple(A _firstValue, B _secondValue, C _thirdValue) {
//         firstValue = _firstValue;
//         secondValue = _secondValue;
//         thirdValue = _thirdValue;
//     }
// 
//     public A getFirstValue() {
//         return firstValue;
//     }
// 
//     public void setFirstValue(A _firstValue) {
//         firstValue = _firstValue;
//     }
// 
//     public B getSecondValue() {
//         return secondValue;
//     }
// 
//     public void setSecondValue(B _secondValue) {
//         secondValue = _secondValue;
//     }
// 
//     public C getThirdValue() {
//         return thirdValue;
//     }
// 
//     public void setThirdValue(C _thirdValue) {
//         thirdValue = _thirdValue;
//     }
// 
// }
// 
// Path: bluez-dbus/src/main/java/org/bluez/datatypes/TwoTuple.java
// public class TwoTuple<A, B> extends Tuple {
// 
//     @Position(0)
//     private A firstValue;
//     @Position(1)
//     private B secondValue;
// 
//     public TwoTuple(A _firstValue, B _secondValue) {
//         firstValue = _firstValue;
//         secondValue = _secondValue;
//     }
// 
//     public A getFirstValue() {
//         return firstValue;
//     }
// 
//     public void setFirstValue(A _firstValue) {
//         firstValue = _firstValue;
//     }
// 
//     public B getSecondValue() {
//         return secondValue;
//     }
// 
//     public void setSecondValue(B _secondValue) {
//         secondValue = _secondValue;
//     }
// 
// }


// Path: bluez-dbus/src/test/java/com/github/hypfvieh/helper/BluezInterfaceCreator.java
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;
import java.util.Set;
import java.util.TreeSet;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.bluez.datatypes.ThreeTuple;
import org.bluez.datatypes.TwoTuple;
import org.freedesktop.dbus.DBusPath;
import org.freedesktop.dbus.exceptions.DBusException;
import org.freedesktop.dbus.interfaces.DBusInterface;
import org.freedesktop.dbus.messages.DBusSignal;
import org.freedesktop.dbus.types.UInt16;
import org.freedesktop.dbus.types.UInt32;
import org.freedesktop.dbus.types.UInt64;
import org.freedesktop.dbus.types.Variant;
import org.slf4j.LoggerFactory;

            String result = sb.toString();

            for (String type : types) {
                if (type.contains("Variant<")) {
                    imports.add(Variant.class.getName());
                }

                if (type.contains("FileDescriptor")) {
                    imports.add(org.freedesktop.dbus.FileDescriptor.class.getName());
                }
                if (type.contains("Map<")) {
                    imports.add(Map.class.getName());
                }
                if (type.contains("Properties")) {
                    imports.add(Properties.class.getName());
                }
                if (type.contains("UInt16")) {
                    imports.add(UInt16.class.getName());
                }
                if (type.contains("UInt32")) {
                    imports.add(UInt32.class.getName());
                }
                if (type.contains("UInt64")) {
                    imports.add(UInt64.class.getName());
                }

                if (type.contains("DBusPath")) {
                    imports.add(DBusPath.class.getName());
                }

                if (type.startsWith("ThreeTuple")) {