whole_func_string: function getFirstAvailableAddress() {
          let highestLastOctet = 0;
          usedAddresses.forEach((address) => {
              const octets = address.split('.');
              const thisLastOctet = parseInt(octets[3], 10);
              if (thisLastOctet > highestLastOctet) {
                  highestLastOctet = thisLastOctet;
              }
          });
          highestLastOctet += 1;
          if (highestLastOctet > 255) {
              this.logger.error('No available addresses for GTM server');
              return null;
          }
          return `192.0.2.${highestLastOctet}`;
      }
func_code_string: function getFirstAvailableAddress() {
          let highestLastOctet = 0;
          usedAddresses.forEach((address) => {
              const octets = address.split('.');
              const thisLastOctet = parseInt(octets[3], 10);
              if (thisLastOctet > highestLastOctet) {
                  highestLastOctet = thisLastOctet;
              }
          });
          highestLastOctet += 1;
          if (highestLastOctet > 255) {
              this.logger.error('No available addresses for GTM server');
              return null;
          }
          return `192.0.2.${highestLastOctet}`;
      }
func_documentation_string: when creating the server, we have to give it an IP address we use 192.0.2.X as that is defined in https://tools.ietf.org/html/rfc5737 for use as a documentation server and is not likely to be in use